ইয়ো-ইয়ো খেলনাটিতে দুটো চাকতি একটা ছোট্ট রড দিয়ে যুক্ত থাকে, যে রডে সুতো প্যাঁচানো থাকে। যদি সূতোটার একপ্রান্তে ধরে প্যাঁচানো কুন্ডলীটা ছেড়ে দেওয়া হয়, ইয়ো-ইয়োটা ঘুরতে ঘুরতে প্রথমে নিচে নামবে, তারপর জড়তার কারণে আবার উপরে উঠতে থাকবে। কিন্তু যতখানি উপরে উঠবে, তা হবে যতখানি নিচে নেমেছিল তার k ভাগ। আমরা ধরে নিতে পারি যে, এভাবে চলতে চলতে যদি কখনো 1 এর কম দৈর্ঘ্য উপরে উঠে, তাহলে ইয়ো-ইয়োটা থেমে যাবে।
এমন একটা প্রোগ্রাম লিখতে হবে যেটা l দৈর্ঘ্যের সূতা আর কোন k এর মানের জন্যে থেমে যাওয়ার আগে ইয়ো-ইয়োটা কয়বার উপরে উঠবে তা দেখাবে। যেমন, ধরি l = 17 এবং k = 2, সেক্ষেত্রে ইয়ো-ইয়োটা 8.5, 4.25, 2.125, 1.0625 উচ্চতায় উঠবে আর তারপর থেমে যাবে। তাই উত্তর হবে 4।
ইনপুট
দুটো পূর্ণসংখ্যা l (1 ≤
l ≤ 109) এবং k
(2 ≤ k ≤ 100).
আউটপুট
যতবার ইয়ো ইয়োটা উপরে উঠবে।
উদাহরণ
ইনপুট
17 2
আউটপুট
4
প্রাথমিক
সমস্যা –
সাইকেল
অ্যালগোরিদম
অ্যানালাইসিস
ইয়ো-ইয়োর
ওঠানামা
সিমুলেট করতে
হবে এবং গুণতে
হবে কয়বার
উপরে উঠেছে।
ধরা যাক l হচ্ছে
ইয়ো-ইয়োটির
বর্তমান
উচ্চতা। নিচে
নামার পরে সেটা
উপরে উঠবে
কেবলমাত্র
যদি এটা 1 এর
বেশি উচ্চতায়
ওঠে। যদি ওঠার
পরিমাণ 1 এর
চেয়ে কমে যায়, তাহলে
সেটি থেমে
যাবে এবং সেই
ওপরে ওঠাটা
আমরা গোনায়
ধরব না।
ধরি ইয়ো-ইয়োটা
l দৈর্ঘ্য
নিচে নামলো।
ছেড়ে দেওয়ার
পরে এটা উপরে
উঠবে যদি এবং
কেবল যদি এই
উপরে ওঠার
পরিমাণ একের
বেশি হয়। এটা
ততক্ষণই
সম্ভব যতক্ষণ l
/ k > 1 এই
অসমতাটা সত্য
থাকে।
আমরা res নামের
একটা
ভ্যারিয়েবলে
উপরে ওঠার
পরিমাণটা
রেখে দিতে
পারি।
res = 0;
scanf("%lf
%lf",&l,&k);
while(l
/ k > 1.0)
l
/= k, res++;
printf("%d\n",res);